草庐IT

Ruby Regex 舍入尾随零

全部标签

使用 decltype 和 constness 的 C++11 尾随返回成员函数

我正在尝试使用decltype理解C++11中基于尾随返回的新函数声明语法。在下面的代码中,我尝试定义一个返回const&的成员函数,以允许对i进行只读访问#include#includestructX{int&i;X(int&ii):i(ii){}//autoacc()const->std::add_const::type{returni;}//failstheconstnesstestautoacc()const->decltype(i){returni;}//failstheconstnesstest//constint&acc()const{returni;}//worksas

c++ - 是否可以使用 ICU 以任意编码从字符串中提取 'trim' 尾随空格/制表符而不进行任何转换

具体来说,给定以下内容:指向缓冲区的指针,该缓冲区包含采用某种编码X的字符串数据重症监护室支持缓冲区中数据的长度,以字节为单位缓冲区的编码(即X)我可以计算字符串的长度,减去尾随的空格/制表符,而不是首先将它实际转换成ICU的内部编码,然后再转换回来吗?(由于unicode规范化,这本身可能会有问题)。对于某些编码,例如任何基于ascii的编码以及utf-8/16/32,解决方案非常简单,只需从字符串的后面开始迭代,一次比较1/2/4个字节与两个常量。对于其他人来说可能更难(想到可变长度编码)。我希望它尽可能高效。 最佳答案 对于较

c++ - 扣除指南的尾随返回类型不是特化

我正在尝试使用c++17中的新推导指南进行高级类模板参数推导。不幸的是,看起来您只能在->之后使用简单的模板声明。,但我需要一个辅助结构来确定结果类型。我的用例是这样的:我有一个可变模板类,它接受任意数量的不同类型。对于一个构造函数,我想指定每个构造函数,对于另一个构造函数,我只想指定一种类型并将其复制N次。要访问此N在演绎指南中我介绍了一种新类型:templatestructReplicate{};我上的课和这个很相似:templatestructFoo{//[...]memberstd::tuple//ctor1:givevaluesforalltypes(easytodeduce

c++ - 如何防止 C++ 中的舍入错误?

如何防止或修复C++中的舍入错误?例子:floatSomeNumber=999.9999;cout它打印出1000! 最佳答案 您可以通过设置精度来更改cout完成的舍入。cout.precision(7);floatSomeNumber=999.9999;cout或者,您可以使用cstdio中的printf。 关于c++-如何防止C++中的舍入错误?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

c++ - 舍入整数例程

教程中的整数运算让我感到困惑。准确的说,整数除法。看似首选的方法是将除数转换为float,然后将float四舍五入为最接近的整数,然后将其转换回整数:#includeintround_divide_by_float_casting(inta,intb){return(int)std::roundf(a/(float)b);}然而,这就像用右手挠左耳一样。我使用:intround_divide(inta,intb){returna/b+a%b*2/b;}虽然没有什么突破,但不标准的事实让我怀疑我是否遗漏了什么?尽管我进行了(尽管是有限的)测试,但我找不到两种方法给我不同结果的任何情况。有

c++ - 在 C++11 函数中使用尾随返回类型的优势

与普通返回类型相比,在C++11中指定尾随返回类型有什么优势?在此处查看foo1与foo2:intfoo1(){return1;}autofoo2()->int{return1;}intmain(){foo1();foo2();} 最佳答案 在这个例子中,它们的意思完全相同。但是,始终如一地使用尾随返回类型形式有一些优势(PhilNash称这些为"EastEndFunctions",因为返回类型位于东端)。使用参数。显然,在使用参数确定返回类型时,您必须使用尾随返回类型。templateautoprint(Tconst&t)->de

c++ - 如何指定 setprecision 舍入

当流到标准输出时,我可以指定setprecision来舍入double值吗?ofile输出:0.756247615801ofile输出:0.756248但我需要输出为0.756247谢谢 最佳答案 还有std::fesetround来自,设置舍入方向:#include#include#include#includeintmain(){doubleruntime=0.756247615801;//Setroundingdirectionandoutputwithsomeprecision:constautoprev_round=std

c++ - C++14 中的尾随返回类型

在C++14中引入auto返回类型后,是否存在需要尾随返回类型或在C++14和17中完全过时的实际情况? 最佳答案 考虑...autof(intx){if(x==2)return3;return2.1;}...这有一个不明确的返回类型-int或double。显式返回类型-无论是前缀还是尾随-都可以消除歧义并将return参数转换为返回类型。如果您想在某些参数上使用decltype、sizeof等,尾随返回类型也特别有用:autof(intx)->decltype(g(x)){if(x==2)returng(x);return2;}

c++ - 具有尾随返回类型的模板成员函数,即使未使用也会出错

我知道模板成员函数只有在使用时才会生成。如果不是所有使用的类型都支持这样的功能,这很方便。但是,这似乎不适用于具有尾随返回类型规范的函数。下面是一个小实验://helperfunctionforcaseAworkaroundtemplateautoF(T&&x)->decltype(x.templatef()){returnx.templatef();}//helperfunctionforcaseBworkaroundtemplateautoG(T&&x)->decltype(x.g()){returnx.g();}templatestructS{//caseA:notokinGCC

c++ - 限制固定输出的尾随零数

我需要一些有关使用C++流进行输出格式化的帮助。我想打印带有固定小数点且最多2个尾随位置的数字。我尝试了以下方法:#include#includeusingnamespacestd;intmain(intargc,char**argv){floattestme[]={0.12345,1.2345,12.345,123.45,1234.5,12345};std::cout输出是:0.121.2312.35123.451234.5012345.00但我想拥有0.121.2312.35123.451234.512345我能否在不使用额外的字符串操作的情况下实现这一点?